package model

import (
	"fmt"
	"ginblog/utils"
	"github.com/jinzhu/gorm"
	_ "github.com/jinzhu/gorm/dialects/mysql"
	"time"
)

var db *gorm.DB
var err error

func InitDb() {
	//gorm.Open("mysql", "user:password@/dbname?charset=utf8&parseTime=True&loc=Local")
	db, err = gorm.Open(utils.Db,
		fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=%s&parseTime=True&loc=Local",
			utils.DbUser,
			utils.DbPassword,
			utils.DbHost,
			utils.DbPort,
			utils.DbName,
			utils.DbCharset,
		))
	if err != nil {
		panic(err)
		//fmt.Println("数据库连接错误", err)
		return
	}

	// 全局禁用表名复数
	// 如果设置为true,`User`的默认表名为`user`,使用`TableName`设置的表名不受影响
	db.SingularTable(true)

	//自动迁移
	//db.AutoMigrate(&User{}, &Article{}, &Category{})

	//设置连接池中最大空闲连接数
	db.DB().SetMaxIdleConns(10)

	//设置数据库最大连接数
	db.DB().SetMaxOpenConns(100)

	//设置连接的最大可复用时间
	db.DB().SetConnMaxLifetime(10 * time.Second)

	//关闭数据库
	//db.Close()
}
